﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.ComponentModel;

namespace xbmc_json_async.Types.Video.Details
{
    /// <summary>
    /// Video.Details.Movie
    /// Still to implement: (string)set, (string.array)setid, (video.cast)cast
    /// http://wiki.xbmc.org/index.php?title=JSON-RPC_API/v3#Video.Details.Movie
    /// </summary>
    public abstract class Movie : File
    {
        /// <summary>
        /// Gets or sets the country.
        /// </summary>
        /// <value>
        /// The country.
        /// </value>
        [DisplayName("Country"), Category("General")]
        public string country { get; set; }

        /// <summary>
        /// Gets or sets the genre.
        /// </summary>
        /// <value>
        /// The genre.
        /// </value>
        [DisplayName("Genre"), Category("General")]
        public string genre { get; set; }

        /// <summary>
        /// Gets or sets the imdbnumber.
        /// </summary>
        /// <value>
        /// The imdbnumber.
        /// </value>
        [DisplayName("IMDB Number"), Category("General")]
        public string imdbnumber { get; set; }

        /// <summary>
        /// Gets or sets the movieid.
        /// </summary>
        /// <value>
        /// The movieid.
        /// </value>
        [DisplayName("Movie ID"), Category("General")]
        public int movieid { get; set; }

        /// <summary>
        /// Gets or sets the mpaa.
        /// </summary>
        /// <value>
        /// The mpaa.
        /// </value>
        [DisplayName("MPAA"), Category("General")]
        public string mpaa { get; set; }

        /// <summary>
        /// Gets or sets the originaltitle.
        /// </summary>
        /// <value>
        /// The originaltitle.
        /// </value>
        [DisplayName("Original Title"), Category("General")]
        public string originaltitle { get; set; }

        /// <summary>
        /// Gets or sets the plotoutline.
        /// </summary>
        /// <value>
        /// The plotoutline.
        /// </value>
        [DisplayName("Plot Outline"), Category("General")]
        public string plotoutline { get; set; }

        /// <summary>
        /// Gets or sets the premiered.
        /// </summary>
        /// <value>
        /// The premiered.
        /// </value>
        [DisplayName("Premiered"), Category("General")]
        public string premiered { get; set; }

        /// <summary>
        /// Gets or sets the productioncode.
        /// </summary>
        /// <value>
        /// The productioncode.
        /// </value>
        [DisplayName("Production Code"), Category("General")]
        public string productioncode { get; set; }

        /// <summary>
        /// Gets or sets the rating.
        /// </summary>
        /// <value>
        /// The rating.
        /// </value>
        [DisplayName("Rating"), Category("General")]
        public double rating { get; set; }

        /// <summary>
        /// Gets or sets the showlink.
        /// </summary>
        /// <value>
        /// The showlink.
        /// </value>
        [DisplayName("Show Link"), Category("General")]
        public string showlink { get; set; }

        /// <summary>
        /// Gets or sets the sorttitle.
        /// </summary>
        /// <value>
        /// The sorttitle.
        /// </value>
        [DisplayName("Sort Title"), Category("General")]
        public string sorttitle { get; set; }

        /// <summary>
        /// Gets or sets the studio.
        /// </summary>
        /// <value>
        /// The studio.
        /// </value>
        [DisplayName("Studio"), Category("General")]
        public string studio { get; set; }

        /// <summary>
        /// Gets or sets the tagline.
        /// </summary>
        /// <value>
        /// The tagline.
        /// </value>
        [DisplayName("Tagline"), Category("General")]
        public string tagline { get; set; }

        /// <summary>
        /// Gets or sets the top250.
        /// </summary>
        /// <value>
        /// The top250.
        /// </value>
        [DisplayName("Top 250"), Category("General")]
        public int top250 { get; set; }

        /// <summary>
        /// Gets or sets the trailer.
        /// </summary>
        /// <value>
        /// The trailer.
        /// </value>
        [DisplayName("Trailer"), Category("General")]
        public string trailer { get; set; }

        /// <summary>
        /// Gets or sets the votes.
        /// </summary>
        /// <value>
        /// The votes.
        /// </value>
        [DisplayName("Votes"), Category("General")]
        public string votes { get; set; }

        /// <summary>
        /// Gets or sets the writer.
        /// </summary>
        /// <value>
        /// The writer.
        /// </value>
        [DisplayName("Writer"), Category("General")]
        public string writer { get; set; }

        /// <summary>
        /// Gets or sets the year.
        /// </summary>
        /// <value>
        /// The year.
        /// </value>
        [DisplayName("Year"), Category("General")]
        public int year { get; set; }
        /*
    [ Array.String set ]
    [ Array.Integer setid ]
    [ Video.Cast cast ]
   

         */
    }
}
